package 设计模式.结构型.Adapter适配器.Demo_2.dto;

import com.alibaba.fastjson.JSON;
import 设计模式.结构型.Adapter适配器.Demo_1.RebateInfo;

import java.util.Map;

/**
 * 通过反射进行适配（将一个类封装为另一个类）
 */
public class MQAdapter {

    public static RebateInfo filter(String strJson, Map<String, String> link) throws Exception {
        return filter(JSON.parseObject(strJson, Map.class), link);
    }

    /**
     * @param obj
     * @param link
     */
    public static RebateInfo filter(Map obj, Map<String, String> link) throws Exception {
        RebateInfo rebateInfo = new RebateInfo();
        for (String key : link.keySet()) {
            Object val = obj.get(link.get(key));
            RebateInfo.class.getMethod("set" + key.substring(0, 1).toUpperCase() + key.substring(1), String.class).invoke(rebateInfo, val.toString());
        }
        return rebateInfo;
    }

}
